package edu.upf.opencities.manager;

import java.util.List;

import edu.upf.opencities.datamodel.User;

public interface UserManager {
	
	/**
	 * Manager to register a new user
	 * 
	 * @param userName
	 * @param userLastName
	 * @param mail
	 * @param isAdmin
	 * @param userPassword
	 * @param company
	 * @param country
	 * 
	 * @return
	 */
	public boolean registerUser(String userName, String userLastName, String mail, boolean isAdmin, String userPassword, String company, String country);

	/**
	 * Manager to update a user
	 * 
	 * @param userName
	 * @param userLastName
	 * @param mail
	 * @param isAdmin
	 * @param userPassword
	 * @param company
	 * @param country
	 * 
	 * @return
	 */
	public boolean updateUser(String userName, String userLastName, String mail, boolean isAdmin, String userPassword, String company, String country);

	
	/**
	 * Manager to obtain a user
	 * 
	 * @param mail
	 * @return
	 */
	public User getUser(String mail);
	
	/**
	 * Manager to delete a user
	 * 
	 * @param mail
	 * @param userPassword
	 */
	public void deleteUser(String mail, String userPassword);
	
	/**
	 * Manager to control the login
	 * 
	 * @param mail
	 * @param userPassword
	 * @return
	 */
	public boolean loginUser(String mail, String userPassword);
	
	/**
	 * Manager to obtain a list with all users
	 * 
	 * @return
	 */
	public List<User> getAllUsers();

}
